package com.three.iot.channel.api;

import com.github.pagehelper.Page;
import com.three.iot.channel.po.*;
import com.three.iot.commons.enums.Result;

import java.util.List;

/**
 * @author luiz
 * @Title: ProductChannelService
 * @ProjectName iot-server
 * @Description: TODO
 * @date 2019-05-07 14:05
 * https://help.aliyun.com/document_detail/69579.html?spm=a2c4g.11186623.6.716.1a356a9bBfx1Kq
 */
public interface DeviceChannelService {
    /**
     * 查询设备列表
     *
     * @param deviceCondPo
     * @return
     */
    Result<Page<DeviceRespPo>> findDeviceList(DeviceCondPo deviceCondPo);

    /**
     * 按照条件查询设备详情
     *
     * @param deviceCondPo
     * @return
     */
    Result<DeviceDetailRespPo> findDeviceByCond(DeviceCondPo deviceCondPo);
    /**
     * 按照设备编号查询设备详情
     *
     * @param iotNo 设备编号
     * @return
     */
    Result<DeviceDetailRespPo> findDeviceByNo(String iotNo);

    /**
     * 单笔设置设备属性
     *
     * @return
     */
    Result setDeviceProperty(DevicePropertyPo devicePropertyPo);

    /**
     * 查询该设备的所有属性
     * QueryDevicePropertyStatus
     *
     * @return
     */
    Result<List<PropertyRespPo>> findDevicePropertys(DevicePropertyPo devicePropertyPo);
    /**
     * 按照编号查询该设备的所有属性
     * QueryDevicePropertyStatus
     *
     * @return
     */
    Result<List<PropertyRespPo>> findDevicePropertysByNo(String iotNo);

    /**
     * 查询该设备的某个标签的所有数据
     *
     * @param devicePropertyDataPo
     * @return
     */

    Result<DeviceSinglePropertyDataRespPo>  findDevicePropertyData(DevicePropertyDataPo devicePropertyDataPo);

    /**
     * 按照标签列表查询数据
     * @param devicePropertysDataPo
     * @return
     */
    Result<DeviceMultiPropertyDataRespPo>  findDevicePropertysData(DevicePropertysDataPo devicePropertysDataPo);

}
